#include "StdAfx.h"
#include"TMathf.h"
//
//TRECT::TRECT()
//{
//	L = 0L;
//	T = 0L;
//	R = 0L;
//	B = 0L;
//}
//
//TRECT::TRECT(RECT _rc)
//{
//	L = _rc.left;
//	T = _rc.top;
//	R = _rc.right;
//	B = _rc.bottom;
//}
//
//SIZE TRECT::GetSize()
//{
//	SIZE sz = { L,T };
//	return sz;
//}
//
//SIZE TRECT::GetPos()
//{
//	SIZE sz = { 0 };
//	sz.cx = L;
//	sz.cy = T;
//	return sz;
//}
//
//RECT TRECT::GetRECT()
//{
//	RECT rt = { L,T,R,B };
//	return rt;
//}
//
//float TRECT::GetW()
//{
//	return R - L;
//}
//
//float TRECT::GetH()
//{
//	return B - T;
//}
//
//RECT TRECT::Lerp(RECT a, RECT b, float s)
//{
//	RECT rc;
//	rc.left = TLerpLong(a.left, b.left, s);
//	rc.top = TLerpLong(a.top, b.top, s);
//	rc.right = TLerpLong(a.right, b.right, s);
//	rc.bottom = TLerpLong(a.bottom, b.bottom, s);
//	return rc;
//}
//
//bool TRECT::operator==(TRECT& rc)
//{
//	if (rc.L != L)
//	{
//		return false;
//	}
//	if (rc.T != T)
//	{
//		return false;
//	}if (rc.R != R)
//	{
//		return false;
//	}if (rc.B != B)
//	{
//		return false;
//	}
//
//	return true;
//}

float TLerp(float a, float b, float s)
{
	return a + s * (b - a);
}

long TLerpLong(float a, float b, float s)
{
	float r = a + s * (b - a);
	r = a < b ? ceil(r) : floor(r);
	return r;
}

vector4::vector4()
{
	x = 0;
	y = 0;
	w = 0;
	h = 0;
}

vector4::vector4(RECT _rc)
{
	x = _rc.left;
	y = _rc.top;
	w = _rc.right - _rc.left;
	h = _rc.bottom - _rc.top;
}

vector4::vector4(Rect _rc)
{
	x = _rc.X;
	y = _rc.Y;
	w = _rc.Width;
	h = _rc.Height;
}

RECT vector4::GetRECT()
{
	RECT r;
	r.left = x;
	r.top = y;
	r.right = x + w;
	r.bottom = y + h;

	return r;
}

Gdiplus::Rect vector4::GetGDIRect()
{
	Gdiplus::Rect r;
	r.X = x;
	r.Y = y;
	r.Width = w;
	r.Height = h;

	return r;
}

SIZE vector4::GetSIZE()
{
	SIZE sz;
	sz.cx = w;
	sz.cy = h;

	return sz;
}

SIZE vector4::GetPos()
{
	SIZE sz;
	sz.cx = x;
	sz.cy = y;
	return sz;
}

vector4 vector4::Lerp(vector4 a, vector4 b, float s)
{

	vector4 r;
	r.x = TLerp(a.x, b.x, s);
	r.y = TLerp(a.y, b.y, s);
	r.w = TLerp(a.w, b.w, s);
	r.h = TLerp(a.h, b.h, s);
	return r;
}

vector4 vector4::LerpLong(vector4 a, vector4 b, float s)
{
	vector4 r;
	r.x = TLerpLong(a.x, b.x, s);
	r.y = TLerpLong(a.y, b.y, s);
	r.w = TLerpLong(a.w, b.w, s);
	r.h = TLerpLong(a.h, b.h, s);
	return r;

}

bool vector4::Like(vector4 a, vector4 b, float lk)
{
	vector4 temp = a - b;
	if (abs(temp.x) <= lk &&
		abs(temp.y) <= lk &&
		abs(temp.w) <= lk &&
		abs(temp.h) <= lk)
	{
		return true;
	}

	return false;
}

vector4 vector4::operator-(vector4 vec)
{
	vector4 ov;
	ov.x = x - vec.x;
	ov.y = y - vec.y;
	ov.w = w - vec.w;
	ov.h = h - vec.h;

	return ov;
}

bool vector4::operator==(vector4 vec)
{
	if (x == vec.x &&
		y == vec.y &&
		w == vec.w &&
		h == vec.h)
	{
		return true;
	}

	return false;
}
